home *** CD-ROM | disk | FTP | other *** search
- Plugin for uim
-
- From 0.4.6, uim supports plugin system which loads library and scheme
- definition. uim's plugin consist of both scheme and library.
-
- ___________ (load-plugin "foo")
- | | ------------------+---> libuim-foo.so
- | libuim | |
- |___________| +---> foo.scm
-
- When called (load-plugin "foo") from libuim scheme engine, libuim-foo.so
- is loaded and call 'plugin_instance_init' in libuim-foo.so first. After
- loading libuim-foo.so is succeeded, 'foo.scm' is loaded.
-
- * For end users
- If you want to install 3rd party plugin, you have to place both the shared
- object and scheme file to ~/.uim.d/plugin/.
- For example, if you want to install "foo", you have to locate both libuim-foo.so
- and foo.scm to ~/.uim.d/plugin. And you have to add to ~/.uim as follows,
-
- (load-plugin "foo")
-
- * For system admins
- If you want to install 3rd party plugin, you have to place the shared object
- to ${libdatadir}/plugin/ and place the scheme library to ${datadir}/plugin.
- For example, if you want to install "foo", you have to install libuim-foo.so
- to ${libdatadir}/plugin and foo.scm to ${datadir}/plugin. If you want to enable
- this for all users put it as follows in ${datadir}/loader.scm,
-
- (load-plugin "foo")
-
- * For plugin developers
- plugin_instance_init(void): Called when plugin is being loaded. In most case,
- initialize variables and bind scheme symbol and C
- functions.
- plugin_instance_quit(void): Called when plugin is being unloaded.
-
- - Plugin's loading scheme:
- 1. Plugin loading
- dlopen(libuim-foo.so) -> call plugin_instance_init -> call "foo.scm"
-
- 2. Plugin unloading
- call plugin_instance_quit -> dlclose(libuim-foo.so)
-